home *** CD-ROM | disk | FTP | other *** search
/ Young Minds / Young Minds Interactive CD-ROM.ISO / backgamm / board.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-03-09  |  3.0 KB  |  156 lines

  1. /*
  2.  * Copyright (c) 1980 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that this notice is preserved and that due credit is given
  7.  * to the University of California at Berkeley. The name of the University
  8.  * may not be used to endorse or promote products derived from this
  9.  * software without specific prior written permission. This software
  10.  * is provided ``as is'' without express or implied warranty.
  11.  */
  12.  
  13. #ifndef lint
  14. static char sccsid[] = "@(#)board.c    5.2 (Berkeley) 2/16/88";
  15. #endif /* not lint */
  16.  
  17. #include "back.h"
  18.  
  19. static int    i, j, k;
  20. static char    ln[60];
  21.  
  22. wrboard ()  {
  23.     register int    l;
  24.     static char    bl[] =
  25.         "|                       |   |                       |\n";
  26.     static char    sv[] =
  27.         "|                       |   |                       |    \n";
  28.  
  29.     fixtty (noech);
  30.     clear();
  31.  
  32.     if (tflag)  {
  33.         fboard();
  34.         goto lastline;
  35.     }
  36.  
  37.     writel ("_____________________________________________________\n");
  38.     writel (bl);
  39.     strcpy (ln,bl);
  40.     for (j = 1; j < 50; j += 4) {
  41.         k = j/4+(j > 24? 12: 13);
  42.         ln[j+1] = k%10+'0';
  43.         ln[j] = k/10+'0';
  44.         if (j == 21)
  45.             j += 4;
  46.     }
  47.     writel (ln);
  48.     for (i = 0; i < 5; i++) {
  49.         strcpy (ln,sv);
  50.         for (j = 1; j < 50; j += 4) {
  51.             k = j/4+(j > 24? 12: 13);
  52.             wrbsub ();
  53.             if (j == 21)
  54.                 j += 4;
  55.         }
  56.         if (-board[25] > i)
  57.             ln[26] = 'w';
  58.         if (-board[25] > i+5)
  59.             ln[25] = 'w';
  60.         if (-board[25] > i+10)
  61.             ln[27] = 'w';
  62.         l = 53;
  63.         if (off[1] > i || (off[1] < 0 && off[1]+15 > i))  {
  64.             ln[54] = 'r';
  65.             l = 55;
  66.         }
  67.         if (off[1] > i+5 || (off[1] < 0 && off[1]+15 > i+5))  {
  68.             ln[55] = 'r';
  69.             l = 56;
  70.         }
  71.         if (off[1] > i+10 || (off[1] < 0 && off[1]+15 > i+10))  {
  72.             ln[56] = 'r';
  73.             l = 57;
  74.         }
  75.         ln[l++] = '\n';
  76.         ln[l] = '\0';
  77.         writel (ln);
  78.     }
  79.     strcpy (ln,bl);
  80.     ln[25] = 'B';
  81.     ln[26] = 'A';
  82.     ln[27] = 'R';
  83.     writel (ln);
  84.     strcpy (ln,sv);
  85.     for (i = 4; i > -1; i--) {
  86.         for (j = 1; j < 50; j += 4) {
  87.             k = ((j > 24? 53: 49)-j)/4;
  88.             wrbsub();
  89.             if (j == 21)
  90.                 j += 4;
  91.         }
  92.         if (board[0] > i)
  93.             ln[26] = 'r';
  94.         if (board[0] > i+5)
  95.             ln[25] = 'r';
  96.         if (board[0] > i+10)
  97.             ln[27] = 'r';
  98.         l = 53;
  99.         if (off[0] > i || (off[0] < 0 && off[0]+15 > i))  {
  100.             ln[54] = 'w';
  101.             l = 55;
  102.         }
  103.         if (off[0] > i+5 || (off[0] < 0 && off[0]+15 > i+5))  {
  104.             ln[55] = 'w';
  105.             l = 56;
  106.         }
  107.         if (off[0] > i+10 || (off[0] < 0 && off[0]+15 > i+10))  {
  108.             ln[56] = 'w';
  109.             l = 57;
  110.         }
  111.         ln[l++] = '\n';
  112.         ln[l] = '\0';
  113.         writel (ln);
  114.     }
  115.     strcpy (ln,bl);
  116.     for (j = 1; j < 50; j += 4) {
  117.         k = ((j > 24? 53: 49)-j)/4;
  118.         ln[j+1] = k%10+'0';
  119.         if (k > 9)
  120.             ln[j] = k/10+'0';
  121.         if (j == 21)
  122.             j += 4;
  123.     }
  124.     writel (ln);
  125.     writel ("|_______________________|___|_______________________|\n");
  126.  
  127. lastline:
  128.     gwrite ();
  129.     if (tflag)
  130.         curmove (18,0);
  131.     else  {
  132.         writec ('\n');
  133.         writec ('\n');
  134.     }
  135.     fixtty(raw);
  136. }
  137.  
  138. wrbsub () {
  139.     register int    m;
  140.     register char    d;
  141.  
  142.     if (board[k] > 0)  {
  143.         m = board[k];
  144.         d = 'r';
  145.     } else {
  146.         m = -board[k];
  147.         d = 'w';
  148.     }
  149.     if (m>i)
  150.         ln[j+1] = d;
  151.     if (m>i+5)
  152.         ln[j] = d;
  153.     if (m>i+10)
  154.         ln[j+2] = d;
  155. }
  156.